/* eslint-disable import/prefer-default-export */
/*
 * @Description: 通用方法
 * @Author: liushuang
 * @Date: 2022-05-09 12:15:36
 * @LastEditTime: 2022-10-10 17:29:33
 */

/**
 * @desc: 取得一个多边形中心点
 * @param {Array} pathArr
 */
export const getPolygonCenter = (pathArr) => {
  let area = 0.0 // 多边形面积
  let gravityLat = 0.0 // 重心点 latitude
  let gravityLng = 0.0 // 重心点 longitude
  pathArr.forEach((item, index) => {
    const lng = item[0]
    const lat = item[1]
    const nextLng = pathArr[(index + 1) % pathArr.length][0]
    const nextLat = pathArr[(index + 1) % pathArr.length][1]
    // 2
    const tempArea = (nextLat * lng - nextLng * lat) / 2.0
    // 3
    area += tempArea
    // 4
    gravityLat += (tempArea * (lat + nextLat)) / 3
    gravityLng += (tempArea * (lng + nextLng)) / 3
  })
  // 5
  gravityLat /= area
  gravityLng /= area

  return [gravityLng, gravityLat]
}
